Word recognition device and method

ABSTRACT

A word recognition device uses an associative memory to store a plurality of coded words in such a way that a weight is associated with each character of the alphabet of the stored words, wherein equal weights correspond to equal characters. To perform the recognition, a dictionary of words is first chosen; this is stored in the associative memory according to a pre-determined code; a string of characters which correspond to a word to be recognized is received; a sequence of weights corresponding to the string of characters received is supplied to the associative memory; the distance between the word to be recognized and at least some of the stored words is calculated in parallel as the sum of the difference between the weights of each character of the word to be recognized and the weights of each character of the stored words; the minimum distance is identified; and the word stored in the associative memory having the minimum distance is stored.

TECHNICAL FIELD

[0001] The invention relates to a word recognition device and method.

BACKGROUND OF THE INVENTION

[0002] As is known, for reading text, particularly hand-written text,various character recognition systems have been developed, based on textsegmentation, to separate the individual characters or portions thereofone from another, and on processing of the segments obtained for theidentification of the characters. This procedure outputs a series ofcharacters including spaces and punctuation marks.

[0003] Current systems are not, however, always capable of outputtingcorrect data because of the presence of noise, the particular graphicalcharacteristics of the text or the limited capacities of the recognitionsystem. Consequently, further processing of the characters is necessaryso as to guarantee the correctness of the sequence of characters and theextraction of meaningful words.

[0004] For these reasons, word recognition devices have been proposedwhich compare the input word to be recognized with a plurality of wordsbelonging to a vocabulary, until a word in the vocabulary which isidentical to the word to be recognized is identified or the word in thevocabulary that is nearest to that to be recognized is identified. Thecomparison procedure, when carried out sequentially on the words in thevocabulary, requires a considerable amount of time.

SUMMARY OF THE INVENTION

[0005] An object of the invention is to produce a word recognitiondevice and method capable of processing the input characters so as tooutput the word or words having the sequence of characters closest tothe input word in a simple and speedy manner.

[0006] In a first embodiment, the invention includes a method havingsteps of selecting a dictionary of words and associating an analogweight with each character of an alphabet forming the words. The analogweights are such that equal analog weights correspond to identicalcharacters. The method also includes steps of storing the analog weightsin a first analog associative memory and dividing the words into groups.Each group corresponds to words having common lengths. The methodadditionally includes a step of transforming each word of each group ofwords via the analog weights stored in the first analog associativememory into a sequence of analog weights, to provide groups of analogweight sequences. Each group of analog weight sequences corresponds toone of the groups of words having common lengths. The method furtherincludes steps of separating a second analog associative memory intoportions and storing the groups of analog weight sequences in the secondanalog associative memory such that each group of words corresponds toonly one of the portions in the second analog associative memory.

[0007] In a second preferred embodiment, the present invention includesa method having steps of receiving a character string corresponding to aword, determining a length of the character string and transforming thecharacter string into a series of analog signals via analog weightsstored in a first analog associative memory. Equal analog weightscorrespond to identical characters. The method also includes a step ofcoupling the series of analog signals to a portion of a second analogassociative memory having a dictionary stored therein. Each word of thedictionary corresponds to an analog weight sequence stored in the secondanalog associative memory. The portion of the second analog associativememory stores words having lengths comparable to the length of thecharacter string. The method additionally includes steps of computingdistances between each analog weight sequence stored in the portion andthe series of analog signals, selecting those distances that are lessthan a predetermined distance and writing data corresponding to thoseanalog weight sequences providing distances less than the predetermineddistance to a memory.

BRIEF DESCRIPTION OF THE DRAWINGS

[0008] For an understanding of the invention, a preferred embodimentwill now be described, purely by way of non-exhaustive example, withreference to the accompanying drawings in which:

[0009]FIG. 1 is a general block diagram of a word recognition deviceproduced according to the invention;

[0010]FIG. 2 shows the architecture of the memory array;

[0011]FIG. 3 is a flow-chart relating to the recognition methodaccording to the invention;

[0012]FIGS. 4 and 5 show tables relating to the organization of thememory array of FIG. 2;

[0013]FIG. 6 shows a table relating to the character recognition errors;

[0014]FIG. 7 shows a graph obtained from the table of FIG. 6; and

[0015]FIG. 8 shows an adjacency list obtained from the graph of FIG. 7.

DETAILED DESCRIPTION OF THE INVENTION

[0016] In FIG. 1, the word recognition device 1 is located downstream ofan OCR or optical character recognition system (not shown) which isprovided according to any known technique, as described, for example, inthe article entitled “Off-line Handwritten Word Recognition Using aHidden Markow Model Type Stochastic Network” by Mou-Yen Chen, AmlanKundu and Jian Zhou, IEEE Transactions on Pattern Analysis and MachineIntelligence, Vol. 16, No. 5, May 1994.

[0017] The device 1 comprises a control unit 2, which coordinates theactivities of the device 1, as described in this specification below,and has an input 3 at which it receives, from the OCR system, strings ofcharacters on the basis of which the words are to be recognized; a datamemory 4, storing data necessary for the control unit 2 and coupledthereto; a switch matrix 6, coupled to the control unit 2; a referencevoltage generator 7, coupled to the switch matrix 6 by means of inputlines 25; a memory array 10, coupled to the switch matrix 6; a selectionblock 11, coupled to the outputs of the memory array 10 to identify theoutput of the memory array 10 which has minimum value; a priority codegeneration block 12, coupled to the output of the selection block; and amemory element 13, coupled to the output of the priority code generationblock 12.

[0018] In detail, the control unit 2, which may be a microprocessor orother software processing unit, for example, determines the length ofsuccessive words, supplied by the character recognition system, on thebasis of the length of the strings of characters not separated by spacesor punctuation marks and, on the basis of the architecture of the memoryand of the coding used for the characters, it provides commands to theswitch matrix 6. For this purpose the data memory 4 supplies the controlunit 2 with data relating to the organization of the memory array 10(i.e., data relating to the columns 25 of the array 10 in which words ofa given length are stored, as explained below) and data relating to thecoding used for the individual characters, i.e., to the weight (voltagelevel) associated with each character of the alphabet as well as whichof the lines 8 supplies that weight. Consequently, the switch matrix 6couples the lines 8 associated with the weights corresponding to theword to be recognized to the predetermined lines 25 of the memory array10. The voltage values corresponding to the weights of the differentletters, according to a pre-determined coding, are generated by thereference voltage generator 7 which may, for example, be provided asdescribed in European patent application 96830498.0 filed on Sep. 30,1996 in the name of this applicant. The switch matrix 6 may be of anyacceptable type of the many known in the prior art, such as thatdescribed in European patent application 96830497.2 filed on Sep. 30,1996 in the name of this applicant.

[0019] The hardware to implement the memory array 10 comprises a memoryof the associative type, or content addressable memory of a type wellknown in the art. When this type of memory receives a datum formed by asequence of elements at its input, it outputs a datum correlated to theaddress of the line (generally row) in which the datum closest to theinput datum is stored. Preferably, the memory 10 is of theauto-associative type, or it directly outputs the stored datum closestto the input datum. For example, the hardware to perform the memoryfunction for the memory array 10 may be of any acceptable type of themany known in the prior art, such as that described in the article by A.Kramer, M. Sabatini, R. Canegallo, M. Chinosi, P. L. Rolandi and P.Zabberoni entitled “Flash-Based Programmable Nonlinear Capacitor forSwitched-Capacitor Implementations of Neural Networks” in IEDM Tech.Dig., pp. 17.6.1-17.6.4, December 1994.

[0020] In detail, as shown for clarity in FIG. 2, is one example of thehardware for the memory array 10 which comprises M×N pairs of cells 15(4000 ×64 pairs of cells for example), located in M rows and N columns.Each pair of cells 15 comprises a first cell 16 and a second cell 17.The drain and source terminals of all the cells 16, 17 disposed on thesame row are coupled together to the inverting input of an operationalamplifier 20 in a charge integration configuration, having anon-inverting input coupled to earth and an output 21 coupled to theinverting input via a capacitor 22. A reset switch 23 controlled by thecontrol unit 2 (in a manner not shown) is located in parallel to thecapacitor 22. The outputs 21 of the operational amplifiers 20 define theoutputs of the memory array 10.

[0021] The gate terminals of the first cells 16 belonging to the samecolumn are coupled to the same input line 25 of the memory whilst thegate terminals of the second cells 17 belonging to the same column arecoupled to a respective different input 25. With this hardwareconfiguration, as described in detail in the above-mentioned article byKramer et al., by storing a pre-determined voltage value in each pair ofcells and by supplying complementary voltage values Vg and V'g at theinputs 25 of the two cells 16, 17 of a pair 15, a voltage value isobtained at each output 21 of the array 10. This voltage is proportionalto the Manhattan distance between the input vector and the vector storedin each row.

[0022] The distance values present at the outputs 21 of the memory array10 are supplied to the selection block 11 for identification of the rowshaving shorter distance; the selection block 21 is of known type anddescribed, for example, in “Winner-take-all-networks of 0(n) complexity”by Lazzaro, S Ryckenbusch, M A Mahowald and C Mead in Tourestzky D (ed),Advances in Neural Network Information Processing Systems 1. San MateoCA: Morgan Kauffmann Publisher, pp. 703-711 (1988). The addresses of therows at minimum distance (or the stored contents of the rows) are thensupplied to the priority code generation block 12 which places them in apriority code, starting from the row (or vector) at minimum distance andthen to the memory element 13 (an EEPROM, ROM, RAM, or other memory forexample) for them to be stored.

[0023] The word recognition device 1 of FIG. 1 operates according to thefollowing method, described with reference to the flowchart of FIG. 3.

[0024] Initially a dictionary I is selected, or a base of meaningfulwords in a certain language, block 30; this dictionary must be suited tothe physical limitations of the memory array 10. A coding of thedictionary is then defined such as to show the characteristics of thelanguage in a readily computable way, block 31. As indicated, the codingtakes place by associating an appropriate voltage value (weight) to eachcharacter of the alphabet, as exemplified below. Then, block 32, thedictionary is inserted into the memory array 10 using the coding definedabove, preferably storing several words in each row of the array, asdescribed below.

[0025] Subsequently, block 33, the sequence of characters belonging to aword to be recognized is input into the memory array 10, using the samecoding of the characters used to store the dictionary. Specifically, onthe basis of the coding table stored in the data memory 4, the controlunit 2 commands the switch matrix 6 so that the matrix 6 supplies to theinput lines 25 of the memory array 10 the corresponding pairs of voltagevalues which are complementary to each other and generated by thereference voltage generator 7.

[0026] The memory array 10 then calculates the distance between the wordto be recognized and each of the words stored in the memory array 10 orin the desired portion thereof, or calculates the sum of the distancebetween the weights associated with the characters forming the word tobe recognized and the weights associated with the correspondingcharacters of the words stored in the individual rows (or addressedportions of rows), block 34. In particular, if we call the coding of asingle element (character) of a stored word a_(i) and the coding of acorresponding element (character) of the word to be recognized b_(i),the memory array 10 calculates the distance dist defined as:${dist} = {\sum\limits_{j = 1}^{L}{\theta \left( {a_{i},b_{i}} \right)}}$

[0027] in which L is the length of the word to be recognized and θrepresents the generic calculation function of the distance (theManhattan distance in the case of the memory array illustrated above).

[0028] On the basis of this distance, as described above, the blocks11-13 are capable of showing and storing addresses of the rows of thearray 10 relating to the words closest to the input word or directlystoring the words, block 35.

[0029] In this way, the search for stored words most similar to an inputword is carried out in parallel on the entire array or on apredetermined portion thereof. The output words may then be subjected tofurther processing for a better reconstruction of the original text onthe basis of other criteria such as the context, more or less common useof the words identified (frequency), etc.

[0030] To optimize the occupation of the memory array 10 in view of thepresence of words of variable length, it is also proposed to organizethe memory array 10 by dividing it into sub-groups (groups of columns orof rows) which are selectively addressable by the control unit 2 throughthe switch matrix 6, and then to carry out a dedicated searchconsidering only the words linked to the input configuration, or havinghomologous dimensions.

[0031] In detail, given the memory array 10 of dimension M×N, given thebase I (dictionary) of storable configurations (words) of differentlength, also coming from different types of data, by dividing the base Iinto a number s of classes, each containing configurations having thesame maximum length; indicating by max(j) the maximum length of theconfigurations contained in the class j, plus an arbitrary number ofadditional elements (such as the frequency of the configuration -word-expressed as a codified number), whenever the following inequality ismet:

max(1)+max(2)+. . . +max(j−1)+max(j)≦N

[0032] for j≦s. This configuration excludes at most a limited number ofelements of the base I. It is possible to organize the memory array 10in such a way that each line of the memory array 10 comprises aplurality (j) of groups of memory locations, with each group oflocations of a line being intended for the storage of a word. Adjacentgroups of memory locations on the same line store words of differentmaximum length, whilst groups of memory locations belonging to differentlines but disposed on the same columns store words belonging to the sameclass (having the same length).

[0033] An example of organization of the memory array 10 in the case inwhich the words are stored in rows is shown in the table in FIG. 4. Inthis table, the columns of the array 10 are re-grouped into groups ofcolumns each associated with a different class of the base I (and thenumber of columns of each group is equal to the maximum length of theconfigurations belonging to the respective class). The configurations(words) belonging to the same class are stored in different rows of therespective group of columns.

[0034] Given this organization, by considering a dictionary I of approx.25,000 words of different length, taking into account that the frequencyof the words in a text decreases as the length of the words increasesand that words of length greater than 24 characters represent 0.4% ofthe total, it is possible to sub-divide the memory array 10 asillustrated in detail in the table shown in FIG. 5. The organizationdescribed above enables 90% occupation of the memory to be obtained withonly 0.4% of the words in the dictionary that are not stored.

[0035] With this type of organization, word recognition takes place bycomparing the word supplied to the inputs 25 of the memory array 10 withthe words stored in the corresponding group of columns, as stored in thedata memory 4.

[0036] The organization described above enables different types of datato be loaded onto the same line, associating them with the classesorganized by columns and then selecting the calculation on the basis ofthe data required. For example, as an alternative to that shown in thetable of FIG. 5, in which the memory array 10 stores only completewords, it is possible to store in the same memory array (but in anotherportion thereof) the weights used for the recognition of the individualcharacters and in another portion the weights used for the recognitionof the words, thereby using a single memory device both for therecognition of characters (OCR) and for the recognition of words.

[0037] By using a five bit coding of the memory cells 16, 17, it ispossible to program up to 32 different levels. Noting that the Latinalphabet comprises 26 letters, the coding of the words may take place byassociating a different voltage level of predetermined value with eachcharacter of the alphabet forming a word. The six remaining levels maybe used for the coding of characters which are special or used as wordseparators.

[0038] Advantageously, the assignment of the weight (voltage level) toeach character is carried out taking account of the “morphologicalcloseness” of the different characters. In particular, this is carriedout on the basis of the following considerations.

[0039] Every character recognition device is capable of supplying atleast three types of responses: a correct response, when the devicesucceeds in recognizing the character correctly; an incorrect responsewhen the device outputs a character which does not correspond to theoriginal one; or the rejection of the character, when the device doesnot have sufficient elements for the decision. By carrying outfunctional tests in an OCR device it is possible to extract data aboutthe discriminatory capacities of the device and organize them in atable, a so-called confusion table, which represents, for each inputcharacter, the number of times that character has been recognized in theform of a pre-determined output character.

[0040] An example of a confusion table obtained for a given characterrecognition device is shown in FIG. 6. In the confusion table of FIG. 6,“rejections” of characters have not been accepted; the OCR device hasbeen forced to supply an output character in any case. In this way, ifon the one hand there is an increase in noise, on the other hand it ispossible to show to a greater extent the morphological closenesses ofthe characters. In the table, relating to the recognition of upper-casecharacters, the number in correspondence with the intersection between agiven column and a given row indicates the number of times the letterindicated in the column in question has been recognized as the letterindicated in that row. Consequently, the results relating to correctrecognitions are plotted on the diagonal and the remaining results referto incorrect recognitions. In practice, therefore, the confusion tablerepresents the degree of similarity of one character to another.

[0041] An oriented and weighted graph has been extracted from theconfusion table, from which graph the noise, produced by occasionalincorrect character recognition, is excluded. This exclusion may becarried out by regarding as zero the similarity of characters which mayhave been confused with one another less frequently than apre-determined threshold (less than 5 times for example). An adjacencygraph is obtained in this way which, for the table of FIG. 6, assumesthe form shown in FIG. 7. In practice, the adjacency graph graphicallyrepresents the proximity of groups of characters having homologouscharacteristics. The longer the path from one letter to another, theeasier it is to recognize differences between them. The strongerconnections may be identified by noting the weight of each connectionand of the double connections existing between different pairs ofcharacters.

[0042] An adjacency list, shown in FIG. 8, in which the characters mosteasily confused with each other are placed one next to the other, hasbeen obtained from the adjacency graph. This list is used to establishthe coding of the characters in the memory array 10. In practice, theweight associated with each character is chosen such that the differencebetween two adjacent characters is represented solely by one weightunit, whilst very different weights correspond to distant elements. Forexample, the adjacency list of FIG. 8 may be coded by associating theweight (or coding) 0 for the letter D, 1 for the letter 0, 2 for theletter Q and so on, up to 29 for the letter X.

[0043] In this way, and as mentioned above, the memory array 10supplies, at each of its outputs 21, different values equal to thedistance between the coding of the input word and the word stored in therow corresponding to that output. In particular, if the input word has acomplete meaning and has been stored in the array 10, one of the outputswill have an output equal to 0, indicating that the input word has beenrecognized. When, on the other hand, none of the outputs has the valuezero and one or more outputs has a very low voltage level, there isdistorted recognition of a character due to the confusion of theoriginal character with one of the characters adjacent to it on theadjacency list of FIG. 7.

[0044] Obviously, the coding obtained in this way is strictly linked tothe performance of the OCR device which carries out the recognition andfor different OCR devices it is necessary to repeat the procedure toobtain the respective adjacency list and hence the respective coding.

[0045] The advantages that can be obtained with the device described areas follows. The use of an associative memory enables the search forwords most similar to an input word to be parallelized, enabling a highresponse rate to be obtained. The optimization of the memory occupationenables a large vocabulary to be stored and hence the recognitioncapacities of the device to be improved. The possibility of storing dataof different types means that the device is highly flexible, on thebasis of the requirements and the type of coding described which makesuse of the homologies between the characters making the correct wordsmore easily identifiable in the case in which the word to be recognizedhas one or more errors (characters reconstructed incorrectly).Consequently the device has improved efficiency and reliability comparedwith current devices.

[0046] Finally, it will be clear that numerous modifications andvariants, all of which come within the scope of the inventive concept,may be introduced to the device described and illustrated here. Inparticular, the organization described of the memory array 10 and thecoding illustrated are solely exemplary. The array may be of theauto-associative or hetero-associative type, whenever the data outputare sufficient to identify one or more elements stored on the basis ofthe distance from the input word to be recognized. Although the devicedescribed permits an identification solely of words with a given type ofcharacters (upper-case for example), the use of a larger number ofdevices or the use of a memory of larger size enables words with bothtypes of character to be identified.

1. A word recognition device, comprising an associative memory.
 2. Adevice according to claim 1 wherein said associative memory storesweights, each associated with a respective character of the alphabet. 3.A device according to claim 2 wherein said associative memory comprisesa plurality of memory lines each formed by a plurality of groups ofmemory locations each for the storage of a respective word, adjacentgroups of memory locations storing words of different maximum length. 4.A device according to claim 3 , comprising a switch matrix suitable forselectively enabling one of said groups of locations in said memorylines.
 5. A word recognition method, comprising the step of storing aplurality of words in an associative memory.
 6. A method according toclaim 5 wherein said step of storing comprises the steps of: selecting adictionary of words; associating a weight with each character of thealphabet forming said words, wherein equal weights correspond to equalcharacters; storing said weights in said associative memory; and in thatit further comprises the steps of: receiving a string of characterscorresponding to a word to be recognized; supplying to said associativememory a sequence of weights corresponding to the string of charactersreceived; calculating in parallel the distance between said word to berecognized and at least some of said words stored as the sum of thedifference between the weights of each character of said word to berecognized and the weights of each character of said stored words;identifying a minimum distance from among said distances; and storingthe word stored in said associative memory having said minimum distance.7. A method comprising: selecting a dictionary of words; associating ananalog weight with each character of an alphabet forming said words,wherein equal analog weights correspond to identical characters; storingsaid analog weights in a first analog associative memory; dividing saidwords into groups, with each group corresponding to words having commonlengths; transforming each word of each group of words via said analogweights stored in said first analog associative memory into a sequenceof analog weights, to provide groups of analog weight sequences, eachsaid group of analog weight sequences corresponding to one of saidgroups of words having common lengths; separating a second analogassociative memory into portions; and storing said groups of analogweight sequences in said second analog associative memory such that eachgroup of words corresponds to only one of said portions in said secondanalog associative memory.
 8. A method as claimed in claim 7 whereinsaid step of separating a second analog associative memory into portionsincludes a step of separating said second analog associative memory intonon-overlapping portions each comprising one or more columns of saidsecond analog associative memory.
 9. A method as claimed in claim 7 ,further comprising steps of: receiving a character string correspondingto a word; determining a length of said character string; transformingsaid character string into a series of analog signals via said analogweights stored in said first analog associative memory; coupling saidseries of analog signals to a portion of said second analog associativememory storing words having lengths comparable to said length of saidcharacter string; computing distances between each analog weightsequence stored in said portion and said series of analog signals;selecting those distances that are less than a predetermined distance;and writing data corresponding to those analog weight sequencesproviding distances less than said predetermined distance or providing adistance of zero to a memory.
 10. A method as claimed in claim 9 whereinsaid step of writing data corresponding to those analog weight sequencesproviding distances less than said predetermined distance includes astep of writing data describing locations in said second analogassociative memory corresponding to those analog weight sequencesproviding distances less than said predetermined distance to a digitalmemory.
 11. A method as claimed in claim 9 wherein said step of writingdata corresponding to those analog weight sequences providing distancesless than said predetermined distance to a memory includes a step ofwriting binary data corresponding to those analog weight sequencesproviding distances less than said predetermined distance to a digitalmemory.
 12. A method as claimed in claim 9 wherein said step ofcomputing distances includes steps of: providing said series of analogsignals to a corresponding series of columns of said second analogassociative memory; summing, along each row within said series ofcolumns, output signals from analog memory cells across said series ofcolumns, to provide said distances; determining, via a winner-take-allcircuit, when any distances from said summing step are zero;determining, via said winner-take-all circuit, those distances less thana predetermined distance when none of said distances from said summingstep are zero; and writing data corresponding to those analog weightsequences providing distances less than said predetermined distance to amemory.
 13. A method as claimed in claim 12 wherein said step of writingdata corresponding to those analog weight sequences providing distancesless than said predetermined distances includes a step of writing binarydata describing locations in said second analog associative memorycorresponding to those analog weight sequences providing distances lessthan said predetermined distance to a digital memory.
 14. A method asclaimed in claim 12 wherein said summing step includes, for eachsequence of weights corresponding to a word from said dictionary, a stepof summing differences between each weight of said series of weights andeach weight of said sequence of weights corresponding to a word fromsaid dictionary to provide a distance for each sequence of weightscorresponding to a word from said dictionary.
 15. A method as claimed inclaim 14 wherein said summing step includes a step of carrying out allof said steps of summing differences for each sequence of weightscorresponding to a word from a dictionary simultaneously.
 16. A methodcomprising steps of: receiving a character string corresponding to aword; determining a length of said character string; transforming saidcharacter string into a series of analog signals via analog weightsstored in a first analog associative memory, wherein equal analogweights correspond to identical characters; coupling said series ofanalog signals to a portion of a second analog associative memory havinga dictionary stored therein, each word of said dictionary correspondingto an analog weight sequence stored in said second analog associativememory, said portion of said second analog associative memory storingwords having lengths comparable to said length of said character string;computing distances between each analog weight sequence stored in saidportion and said series of analog signals; selecting those distancesthat are less than a predetermined distance; and writing datacorresponding to those analog weight sequences providing distances lessthan said predetermined distance to a memory.
 17. A method as claimed inclaim 16 wherein said step of computing distances includes steps of:providing said series of analog signals to a corresponding series ofcolumns of said second analog associative memory; summing, along eachrow within said series of columns, output signals from analog memorycells across said series of columns, to provide said distances;determining, via a winner-take-all circuit, when any distances from saidsumming step are zero; determining, via said winner-take-all circuit,those distances less than a predetermined distance when none of saiddistances from said summing step are zero; and writing datacorresponding to those analog weight sequences providing distances lessthan said predetermined distance or a distance of zero to a memory. 18.A method as claimed in claim 17 wherein said summing step includes, foreach sequence of weights corresponding to a word from said dictionary, astep of summing differences between each weight of said series ofweights and each weight of said sequence of weights corresponding to aword from said dictionary to provide a distance for each sequence ofweights corresponding to a word from said dictionary.
 19. A method asclaimed in claim 18 wherein said summing step includes a step ofcarrying out all of said steps of summing differences for each sequenceof weights corresponding to a word from a dictionary simultaneously. 20.A method as claimed in claim 17 wherein said step of writing datacorresponding to those analog weight sequences providing distances lessthan said predetermined distance to a memory includes a step of writingbinary data corresponding to those analog weight sequences providingdistances less than said predetermined distance or a distance of zero toa digital memory.